package com.tuliyou.entity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("user_favorites") // 关联数据库表名
public class UserFavorite implements Serializable {

    /**
     * 主键ID（自增）
     */
    @TableId(type = IdType.AUTO) // 自增策略，对应数据库AUTO_INCREMENT
    private Long id;

    /**
     * 用户ID（外键关联users表）
     */
    @TableField("user_id") // 映射数据库字段user_id
    private Long userId;

    /**
     * 院校代码或专业代码
     */
    @TableField("code")
    private String code;

    /**
     * 收藏类型（UNIVERSITY/MAJOR）
     * 注意：数据库字段为favorite_type
     */
    @TableField("favorite_type") // 映射数据库字段favorite_type
    private String favoriteType;

    /**
     * 逻辑删除标记（0未删除，1已删除）
     * MyBatis-Plus逻辑删除注解，自动过滤删除数据
     */
    @TableLogic // 标记为逻辑删除字段
    @TableField("is_deleted") // 映射数据库字段is_deleted
    private Integer isDeleted = 0; // 默认未删除

    /**
     * 创建时间
     * 插入时自动填充当前时间
     */
    @TableField(value = "created_at", fill = FieldFill.INSERT) // 插入时自动填充
    private LocalDateTime createdAt;

    @Serial
    private static final long serialVersionUID = 1L;
}